package com.dingding.service.usermangerservice;

import java.util.List;

import com.dingding.bean.databean.request.ReqCoupon;
import com.dingding.bean.databean.request.ReqDeposit;
import com.dingding.bean.databean.request.ReqGetUserWallet;
import com.dingding.bean.databean.response.DataResponse;
import com.dingding.bean.databean.response.ResCoupon;
import com.dingding.bean.databean.response.ResGetUserWallet;
import com.dingding.bean.entity.Useraccount;

/**
 * 
 * @ClassName: IUserAccountService 
 * @Description:用户账户service 
 * @author cheshaowei
 * @date 2015-10-21 上午10:36:29
 */
public interface IUserAccountService {
  
	/**
	 * @Title: getUserAccountByUserId 
	 * @Description: 查询用户账户信息
	 * @param userId	用户id
	 * @param dataResponse 响应数据
	 * @author lijinchao
	 * @return Useraccount 用户账户信息
	 * @throws
	 */
	public Useraccount getUserAccountByUserId(String userId, DataResponse dataResponse);
	
	/**
	 * @Title: getUserWallet
	 * @Description:获取用户钱包
	 * @author zhaochenguang
	 * @param reqGetUserWallet
	 *            请求数据封装
	 * @param dataResponse
	 *            响应数据封装
	 * @throws
	 */
	public void getUserWallet(ReqGetUserWallet reqGetUserWallet,DataResponse dataResponse);

	
	/**
	 * @Title: getUserWalletInfo
	 * @Description: 获取用户钱包
	 * @param userId 用户id
	 * @author fengshuonan
	 * @return ResGetUserWallet
	 * @throws
	 */
	public ResGetUserWallet getUserWalletInfo(String userId);
	
	/**
	 * @Title: userDeposit 
	 * @Description: 用户提现 
	 * @param reqDeposit 客户端请求参数
	 * @param dataResponse 响应客户端对象
	 * @return void    返回类型 
	 * @throws
	 */
	public void userDeposit(ReqDeposit reqDeposit,DataResponse dataResponse);
	
	/**
	 * @Title: getAllUserAccount 
	 * @Description: 获取全部用户账户列表(数据迁移专用)
	 * @return List<Useraccount>    返回类型 
	 * @throws
	 */
	public List<Useraccount> getAllUserAccount();
	
	/**
	 * @Title: deleteAllUserAccount 
	 * @Description: 删除全部用户账户(数据迁移专用)
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean deleteAllUserAccount();
	
	/**
	 * @Title: updateAllUserAccount 
	 * @Description: 修改用户账户Id(数据迁移专用)
	 * @param useraccounts 用户账户列表
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean updateAllUserAccount(List<Useraccount> useraccounts);
	
	/**
	 * @Title: getCouponList 
	 * @Description: 我的出行券列表
	 * @param reqCoupon 获取我的出行券请求参数
	 * @param dataResponse 响应Bean
	 * @author YHQ
	 * @return void    返回类型 
	 */
	public void getCouponList(ReqCoupon reqCoupon,DataResponse dataResponse);
	
	/**
	 * @Title: getResCoupon 
	 * @Description: 根据用户Id获取要使用的优惠券信息
	 * @param userId 用户Id
	 * @author YHQ
	 * @return ResCoupon    返回类型 
	 */
	public ResCoupon getResCoupon(String userId);
	
}
